package top.lcm889.oj.按算法分类.双指针;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;

/**
 * @author Coder-lcm
 * @date 2021/2/5
 * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
 *
 * 示例 1：
 *
 * 输入："hello"
 * 输出："holle"
 * 示例 2：
 *
 * 输入："leetcode"
 * 输出："leotcede"
 *
 */
public class T345_反转元音字母 {

    public static String reverseVowels(String s) {
        if (s == null) return null;
        HashSet<Character> yuanYin = new HashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));
        int i = 0;
        int j = s.length() - 1;
        char[] res = new char[s.length()];
        while (i <= j){
            char ci = s.charAt(i);
            char cj = s.charAt(j);
            if (!yuanYin.contains(ci)) {
                res[i++] = ci;
            }else if (!yuanYin.contains(cj)){
                res[j--] = cj;
            }else {
                //均为元音则交换
                res[i++] = cj;
                res[j--] = ci;
            }
        }
        return new String(res);
    }

    public static void main(String[] args) {
        System.out.println(reverseVowels("aA"));
    }
}
